package com.jeeplus.modules.api.utils.alipay;

import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.domain.AlipayFundTransToaccountTransferModel;
import com.alipay.api.request.AlipayFundTransToaccountTransferRequest;
import com.alipay.api.response.AlipayFundTransToaccountTransferResponse;

/**
 * alipay.fund.trans.toaccount.transfer(单笔转账到支付宝账户接口)
 * 参考文档：https://docs.open.alipay.com/api_28/alipay.fund.trans.toaccount.transfer/
 * @author wb-wly251833
 *
 */
public class alipayFundTransToaccountTransfer {
	
	public static void main(String[] args) throws AlipayApiException {
		AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, AlipayConfig.format, AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
		AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();
		AlipayFundTransToaccountTransferModel model = new AlipayFundTransToaccountTransferModel();
		//商户转账唯一订单号
		model.setOutBizNo("2019081015423214234323");
		//收款方账户类型。 
		//1、ALIPAY_USERID：pid ,以2088开头的16位纯数字组成。 
		//2、ALIPAY_LOGONID：支付宝登录号(邮箱或手机号)
		model.setPayeeType("ALIPAY_LOGONID");
		//收款方账户。与payee_type配合使用。付款方和收款方不能是同一个账户。
		model.setPayeeAccount("18790751103");
		//测试金额必须大于等于0.1，只支持2位小数，小数点前最大支持13位
		model.setAmount("0.1");
		//当付款方为企业账户且转账金额达到（大于等于）50000元，remark不能为空。
		model.setRemark("转账备注");
		request.setBizModel(model);
		AlipayFundTransToaccountTransferResponse response = alipayClient.execute(request);
		System.out.println(response.getBody());	
		System.out.println(response.getSubMsg());
		System.out.println(response.isSuccess());
		if(response.isSuccess()){
			System.out.println("调用成功");
		} else {
			System.out.println("调用失败");
		}
	}
	
	/**
	 * 支付宝提现
	 * @param orderNum 商户转账唯一订单号
	 * @param payeeAccount 收款方账户
	 * @param amount 转账金额 
	 * @param payeeRealName 收款方真实姓名 (如果本参数不为空，则会校验该账户在支付宝登记的实名是否与收款方真实姓名一致)
	 * @return
	 * @throws AlipayApiException
	 */
	public static boolean transfer(String orderNum,String payeeAccount,String amount,String payeeRealName) throws AlipayApiException{
		AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, AlipayConfig.format, AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
		AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();
		AlipayFundTransToaccountTransferModel model = new AlipayFundTransToaccountTransferModel();
		//商户转账唯一订单号
		model.setOutBizNo(orderNum);
		//收款方账户类型。 
		//1、ALIPAY_USERID：pid ,以2088开头的16位纯数字组成。 
		//2、ALIPAY_LOGONID：支付宝登录号(邮箱或手机号)
		model.setPayeeType("ALIPAY_LOGONID");
		//收款方账户。与payee_type配合使用。付款方和收款方不能是同一个账户。
		model.setPayeeAccount(payeeAccount);
		//测试金额必须大于等于0.1，只支持2位小数，小数点前最大支持13位
		model.setAmount(amount);
		//收款方账号姓名(如果本参数不为空，则会校验该账户在支付宝登记的实名是否与收款方真实姓名一致)
		model.setPayeeRealName(payeeRealName);
		//当付款方为企业账户且转账金额达到（大于等于）50000元，remark不能为空。
		model.setRemark("转账备注");
		request.setBizModel(model);
		AlipayFundTransToaccountTransferResponse response = alipayClient.execute(request);
		System.out.println("body===================:"+response.getBody());	
		if(response.isSuccess()){
			System.out.println("调用成功");
			return true;
		}
		return false;
	}
}
